extends Control

# 存档槽位按钮的预制场景
const SaveSlotButton = preload("res://scenes/save_slot_button.tscn")

# 是否是保存模式（true为保存，false为加载）
var is_save_mode: bool = true

# 节点引用
@onready var save_slots_container = $VBoxContainer/SaveSlotsContainer
@onready var back_button = $VBoxContainer/ButtonContainer/BackButton

# 游戏管理器引用
var game_manager: GameManager

# 初始化UI
func initialize(manager: GameManager) -> void:
	game_manager = manager
	# 更新存档预览信息
	game_manager.update_save_previews()
	# 创建存档槽位按钮
	_create_save_slot_buttons()

func _ready() -> void:
	# 等待节点树准备就绪
	await ready
	# 连接按钮信号
	back_button.pressed.connect(_on_back_button_pressed)

# 创建存档槽位按钮
func _create_save_slot_buttons() -> void:
	print("_create_save_slot_buttons")
	if not save_slots_container or not game_manager:
		return
	
	# 清除现有的槽位按钮
	for child in save_slots_container.get_children():
		child.queue_free()
	
	# 为每个存档槽位创建按钮
	for i in range(game_manager.save_slots.size()):
		var slot_button = SaveSlotButton.instantiate()
		save_slots_container.add_child(slot_button)
		
		# 设置槽位信息
		var slot_info = game_manager.save_info.get(i, {})
		slot_button.setup(i, slot_info, is_save_mode)
		
		# 连接槽位按钮信号
		slot_button.slot_selected.connect(_on_slot_selected)

# 设置界面模式（保存/加载）
func set_mode(save_mode: bool) -> void:
	is_save_mode = save_mode
	# 更新标题
	$VBoxContainer/TitleLabel.text = "存档管理 - %s" % ["保存游戏" if is_save_mode else "加载游戏"]
	# 重新创建槽位按钮
	_create_save_slot_buttons()

# 槽位选择回调
func _on_slot_selected(slot_index: int) -> void:
	if is_save_mode:
		# 保存游戏
		game_manager.save_game(slot_index)
		# 更新槽位显示
		_create_save_slot_buttons()
	else:
		# 加载游戏
		game_manager.load_game(slot_index)
		# 关闭存档界面
		

# 返回按钮回调
func _on_back_button_pressed() -> void:
	game_manager.change_game_state(game_manager.GameState.MAIN_MENU)
